[アップデート] AWS Resilience Hub で既存 CloudWatch アラームの統合機能を使ってみた
いわさです。
先日 AWS Resilience Hub を使っていた時に、次のアップデートがアナウンスされていることに気が付きました。
見落としていたのですが先月に What's New at AWS のアナウンスも出てきたことを確認しました。
従来から AWS Resilience Hub の推奨事項に CloudWatch アラームに関する情報は存在しており、アラームを実装した場合には実装済みとされてレジリエンススコアに影響するようになっていました。
Resilience Hub から生成した CloudWatch アラームテンプレートを使うことで実装済みと認識される形だったのですが、今回のアップデートでは Resilience Hub に関係なく作成したアラームが、条件を満たしていればアラーム実装済みとして認識されるようになっています。
従来のパターンも引き続き利用することが出来ますし、新しい方法でアラーム実装済みと認識させることも出来ます。どちらのパターンも試してみましたのでどういう違いがあるのか紹介します。
従来どおりのアラーム実装方法で認識させてみる
まずは Resilience Hub から生成したテンプレートで CloudWatch アラームを実装してみます。
手順は割愛しますが、事前に適当なワークロードをアプリケーション登録しておきアセスメント済みです。
この時点でオペレーションに関するレコメンデーションとして未実装の推奨アラームが 10 件でています。
実装したいアラームを選択し、「CloudFormation テンプレートを作成」で CloudWatch アラームを実装するための CloudFormation テンプレートを生成してくれます。
生成された CloudFormation テンプレートをそのままデプロイするだけで OK です。
アラーム実装後に再アセスメントしたところ、CloudFormation で実装した CloudWatch アラームが「実装済み」として認識されました。なるほどね。
CloudFormation テンプレートを眺めてみると気づくのですが、「/ResilienceHub/」から始まる SSM パラメータがアラームと一緒にデプロイされています。
こちら公式ドキュメントにも記載されていまして、要はこのパラメータを使って Resilience Hub はアラームが実装済みであると認識するらしいです。
And the two AWS::SSM::Parameter resources define metadata that allow AWS Resilience Hub to identify installed resources without having to scan the actual application.
Integrating operational recommendations into your application with AWS CloudFormation - AWS Resilience Hub より
値としてはアラーム名などが設定されていました。
新しいアラーム認識
要するに、Resilience Hub と CloudWatch アラームの間を SSM パラメータで関連付けることで実装済みと認識していたのですが、今回のアップデートではそれ無しで直接 CloudWatch アラームから認識してくれるようになったようです。
試しに、次のようにアラームのみを実装してみましょう。
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Parameters" : {
"SNSTopicARN" : {
"Type" : "String",
"Description" : "-"
}
},
"Resources" : {
"hoge0115alarm" : {
"Type" : "AWS::CloudWatch::Alarm",
"Properties" : {
"AlarmActions" : [ {
"Ref" : "SNSTopicARN"
} ],
"AlarmDescription" : "-",
"AlarmName" : "hoge0115alarm",
"MetricName" : "5xxErrors",
"Namespace" : "AWS/S3",
"Dimensions" : [ {
"Name" : "BucketName",
"Value" : "hoge1005command"
}, {
"Name" : "FilterId",
"Value" : "hoge1005command-metrics"
} ],
"Period" : 60,
"EvaluationPeriods" : 1,
"DatapointsToAlarm" : 1,
"ExtendedStatistic" : "p30",
"Threshold" : 0,
"ComparisonOperator" : "GreaterThanThreshold",
"TreatMissingData" : "notBreaching",
"Unit" : "Count"
}
}
}
}
デプロイ後に再アセスメントを行ってみると、実装済みアラームが 1 件増えました。
ステータスの表記が従来の「実装済み」と少し違っており、「実装済み(アラームが一致しました)」が設定されていました。
ツールチップを見てみるとアラームが正しく認識されていますね。アラームが認識済みとされる条件はおそらくレコメンドごとに異なりそうです。今回実装済みとなった項目の推奨事項を見てみると「5xxErrors を指定したしきい値以上の場合」となっているので対象バケットの該当メトリクスが静的しきい値で設定されていれば認識されそうです。
さいごに
本日は AWS Resilience Hub で既存 CloudWatch アラームの統合機能を使ってみました。
これまでは、良かれと思って実装していた CloudWatch アラームが Resilience Hub の未実装の推奨アラームと重複していて作り直したり、手動で実装済みと認識させる必要があったと思いますが、条件があっていれば今後はそのまま実装済みとして認識してくれるようになります。
無駄な作業がなくなって自動でスコア評価まで反映してくれるので使いやすくなりますね。